<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 引入Vue -->
    <script src="../js/vue.js"></script>
    <title>04_天气案例_深度监视_简写</title>
</head>
<body>
    
    <!-- 
      
     -->


    <!-- 容器 -->
    <div id="root">
        <h2>今天天气很{{hot}}</h2>
 
        <button @click="changeWeather($event)">切换天气</button>
        <hr/>
 
    </div>

    <script type="text/javascript">
       Vue.config.productionTip=false; // 阻止 vue 在启动时生成生产提示。

       
    const vm =   new Vue({
        // 绑定元素
        el:'#root',
        // 数据属性
        data() {
            return {
                isHot:true,
            }
        },
        // 计算属性
        computed:{
            hot(){
                return this.isHot ? '炎热' : '凉爽';
            }
        },
        // 方法
        methods: {
            changeWeather(){
                this.isHot = !this.isHot;
            }
        },
        // 监视属性：不仅可以监视data属性，计算属性也可以监视
        watch:{

            // 第一种正常写法
            /*isHot:{
                // immediate:true, // 初始化时让handler调用一次
                // handler什么时候调用？当 isHot 发生改变时。
                // deep:true, //开启深度监视
                handler(newVlaue,oldValue){
                    console.log('@IsHot修改了：',newVlaue,oldValue);
                },
            },*/

            // 第一种简写 但是只能实现 handler ，其他的不能使用
            /* isHot(newVlaue,oldValue){
                console.log('@IsHot修改了：',newVlaue,oldValue);
            }, */
            
        }
          
      })

      // 第二种正常写法
      /*vm.$watch('isHot',{
        handler(newVlaue,oldValue){
            console.log('@IsHot修改了：',newVlaue,oldValue);
        }
      })*/

      // 第二种简写
      vm.$watch('isHot',function(newVlaue,oldValue){
        console.log('@IsHot修改了>>@：',newVlaue,oldValue);
      })
      
     
       
    </script>
</body>
</html>